package com.smw.myinterceptor;



import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.smw.dao.UserDao;
import com.smw.entity.User;
import com.smw.util.JwtUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 拦截器
 */
public class MyInterceptor implements HandlerInterceptor {//继承HandlerInterceptor接口之后，ctrl+o 重写preHandle方法
    @Autowired
    private UserDao userDao;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {


        //判断请求是否满足要求
        //满足则放行，不满足则不放行
        /** JWT技术:登录成功之后不将用户信息存在session中-- >
         *根据用户信息生成token信息，将token返回给前端，
         *要求后续需要拦截的请求中在请求头中将token信息带回*/

        //判定用户是否登录>从请求头中获取token信息，将token反解析成看的懂得业务参数
        //校验用户参数是否正确
        String token= request.getHeader("token") ;//从请求头中获取token信息
        System.out.println("拦截器中获取的token的值："+token);
        if(token==null){
            request.getRequestDispatcher("/").forward(request,response);//转发
            //重定向
            //response.sendRedirect("/");
            return false;
        }
        //将token信息反解析
        Map<String,Object> map= JwtUtil.OfToken(token);
        //校验反解析得到map集合中得参数是否正确(用中名和密码)
        //携带用户名和密码去数据库中查询是否正确
        //TODO 去数据库中查询

        return true;
/**
 * 拦截器配好后，去配置类里面添加拦截器拦截的请求
 */
    }
}
